package com.one.apartmentsystem.app.controller;

import cn.hutool.core.lang.UUID;
import com.one.apartmentsystem.common.utils.Result;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件上传接口
 * 处理文件上传相关请求
 */
@RestController
@CrossOrigin
public class UpLoadController {

    /**
     * 上传文件
     *
     * @param file 待上传的文件
     * @return 文件的访问URL
     */
    @PostMapping("/upload")
    public Result upload(@RequestPart("file") MultipartFile[] file) {
        if (file.length == 0) {
            return Result.error("上传失败，请选择文件");
        }
        ArrayList<String> files = new ArrayList<>();
        for (MultipartFile multipartFile : file) {
            // 获取文件名
            String fileName = multipartFile.getOriginalFilename();

            // 获取文件扩展名
            String suffixName = null;
            if (fileName != null) {
                suffixName = fileName.substring(fileName.lastIndexOf("."));
            }

            // 生成新的文件名，防止文件覆盖
            fileName = UUID.randomUUID() + suffixName;
            try {
                // 获取资源路径
                String path = ResourceUtils.getURL("classpath:").getPath() + "static/";
                // 将文件保存到指定路径
                multipartFile.transferTo(new File(path + fileName));
            } catch (IOException e) {
                // 异常处理：抛出运行时异常
                throw new RuntimeException(e);
            }

            files.add("http://localhost:8080/" + fileName);

        }
        return Result.ok(files);

    }
}
